Android_Framework_WindowManagerService_总述

1.1概述

WindowManagerService android 系统的窗口管理员的身份,管理着Android系统中的“窗口”,“窗口”可以理解为Android显示系统界面的基本属性,任何东西只有在窗口里,才有可能被显示出来跟用户进行交互。android的窗口管理服务WindowManagerService(下面简称WMS),管理着窗口的创建和销毁,布局和大小,焦点的控制等等。

WMS的编写主要基于N 代码,进行WMS 的相关功能的阐述跟学习记录。



1.2主要功能概要描述

——>1.窗口的添加和删除。当某个应用程序(或者系统进程)有显示视图的需求时,需要WMS添加窗口,并且在程序进程退出时同样需要WMS销毁对应的窗口。

——>2.启动窗口机制处理。我们在使用某些App时,有时候会先显示一个启动的窗口,这个窗口的作用是在真正的窗口显示出来之前会显示到用户面前,这样会给用户一种视觉过渡的体验,而不是很突兀的卡顿效果。

——>3.窗口大小计算和层级管理。对于不同大小的窗口会提供相应的大小设定的管理,如Dialog,Statusbar的大小,都是由WMS进行管理的。进行窗口显示顺序的管理,不同的窗口类型拥有不同的层级,同一个类型的窗口,创建加入的顺序也有先后,WMS根据不同的类型和顺序管理着窗口的动作。

——>4.窗口动画处理。

注:WMS的详细描述,将囊括上面几个点



1.3 WMS 主要相关联的模块说明

——>ActivityManagerService:应用程序启动是由ActivityManagerService率先发起的,WindowManagerService与ActivityManagerService有紧密的联系。

——>SurfaceFlinger:SurfaceFlinger是负责将窗口的数据进行合成并最终显示到物理屏幕上的系统服务,所有的WMS中窗口数据的变化随时都要通知SurfaceFlinger进行绘制输出。

——>InputManagerService:InputManagerService是事件输入管理服务,其管理着Android设备的事件输入,如触摸事件、按键事件或轨迹球事件等等,这些事件都是由InputManagerService管理并分发到WindowManagerService处理并继续分发到应用或者其他界面上的。

——>PowerManagerService。电源管理服务是比较独立的管理服务,但是与WMS的交互较多,涉及到亮屏和灭屏对窗口的一些交互处理。

——>DisplayManagerService。显示服务管理服务与WMS的相关性也比较强,窗口的属性改变都需要通知显示管理服务进行处理。

——>SystemServer:此类是系统服务,负责启动所有的系统服务,WMS当然也是由其启动。

——>IWindowManager.stub:是WMS通过binder机制所提供的远程代理接口,由WMS具体实现相应的方法。
——>WindowManagerPolicy:是窗口管理策略接口类,提供一系列的接口用于不同的策略类管理窗口。

——>WindowState:是窗口属性类,每一个窗口的构造都会创建一个相应的WindowState的对象。对窗口的管理主要是基于对WindowState的管理。
——>WindowToken:可以理解为窗口令牌,主要用于描述窗口的族类,比较常用的是AppWindowToken专门用于描述Activity的窗口属性,Activity中所有的窗口,如主窗口、对话框和菜单键都是同一个token的Window,这样就将这些window关联起来进行管理。

——>Session:可以理解为申请WMS服务的客户端和WMS的一个会话代理,不同的进程的应用都会有自己独立的session来进行窗口事物的交互。
——>SurfaceSession是与SurfaceFlinger的交互会话代理。
——>SurfaceControl是与SurfaceFlinger交互的控制类。




WMS的详细文章编写计划:

WMS是安卓系统里面比较复杂的一个Service,很难一张图,把他囊括起来。如果IMS是一个项目的经理,那么WMS就是总监。后续文章WMS将从几个模块进行描述:窗口切换,描述WMS如何跟AMS如何沟通的;窗口的层级处理,显示隐藏,各个窗口的位置布局,描述WMS内部的处理的一个逻辑过程;以及几个重点方法跟功能的描述。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值